package Day016_字符流_Properties类.demo01_字符流;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;

/**
 * @author zhangyan
 * @date 2020/5/8 9:24
 */
/*
    java.io.FileReader 类是Reader的子类。构造时使用系统默认的字符编码和默认字节缓冲区。

    1. 字符编码：字节与字符的对应规则。Windows系统的中文编码默认是GBK编码表。
    idea中UTF-8
    2. 字节缓冲区：一个字节数组，用来临时存储字节数据。

    构造方法:
        FileReader(File file) ： 创建一个新的 FileReader ，给定要读取的File对象。
        FileReader(String fileName) ： 创建一个新的 FileReader ，给定要读取的文件的名称。
        当你创建一个流对象时，必须传入一个存在的文件路径

    常用方法:
        public void close() ：关闭此流并释放与此流相关联的任何系统资源。
        public int read() ： 从输入流读取一个字符。
        public int read(char[] cbuf) ： 从输入流中读取一些字符，并将它们存储到字符数组 cbuf中
                                        返回值是读取的字符 个数
 */
public class Test2_FileReader类 {
    public static void main(String[] args) throws Exception{

        //常用方法
        //1. public int read() ： 从输入流读取一个字符
        //创建字符输入流对象,关联数据源文件路径
        FileReader fr1 = new FileReader("D:\\java\\Project\\Demo02\\aaa\\a.txt");
        //定义变量,保存读取的字符数据
        int len;
        //循环读取数据,打印输出
        while ((len = fr1.read()) != -1){
            System.out.println((char) len);
        }
        //关闭流
        fr1.close();

        System.out.println("--------------------");

        //2. public int read(char[] cbuf) ： 从输入流中读取一些字符，并将它们存储到字符数组 cbuf中
        //创建对象 关联路径
        FileReader fr2 = new FileReader("D:\\java\\Project\\Demo02\\aaa\\a.txt");
        //定义字符数组.保存读取到的数据
        char[] c = new char[2];
        //定义变量,表示读取的字符个数
        int len2;
        //循环
        while ((len2=fr2.read(c)) != -1){
            //System.out.println(Arrays.toString(c)); // [国, 中]
            //System.out.println(new String(c)); // 国中
            System.out.println(new String(c,0,len2)); // 国
        }
        //关闭流
        fr2.close();

    }

    //构造方法
    private static void method1() throws FileNotFoundException {
        //构造方法
        FileReader fr = new FileReader("D:\\java\\Project\\Demo02\\aaa\\a.txt");

        File file = new File("D:\\java\\Project\\Demo02\\aaa\\a.txt");
        FileReader fr1 = new FileReader(file);
    }
}
